home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac Interfaces / PInterfaces / QD3DPick.p < prev    next >
Encoding:
Text File  |  1999-05-18  |  7.7 KB  |  209 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DPick.p
  3.  
  4.      Contains:    Q3Pick methods                                    
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.0
  8.  
  9.      Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QD3DPick;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QD3DPICK__}
  27. {$SETC __QD3DPICK__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QD3DPickIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __QD3D__}
  34. {$I QD3D.p}
  35. {$ENDC}
  36.  
  37. {$IFC UNDEFINED __QD3DSTYLE__}
  38. {$I QD3DStyle.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __QD3DGEOMETRY__}
  41. {$I QD3DGeometry.p}
  42. {$ENDC}
  43.  
  44.  
  45. {$PUSH}
  46. {$ALIGN POWER}
  47. {$LibExport+}
  48.  
  49. {****************************************************************************
  50.  **                                                                            **
  51.  **                            Mask bits for hit information                     **
  52.  **                                                                            **
  53.  ****************************************************************************}
  54.  
  55. TYPE
  56.     TQ3PickDetailMasks             = SInt32;
  57. CONST
  58.     kQ3PickDetailNone            = 0;
  59.     kQ3PickDetailMaskPickID        = $01;
  60.     kQ3PickDetailMaskPath        = $02;
  61.     kQ3PickDetailMaskObject        = $04;
  62.     kQ3PickDetailMaskLocalToWorldMatrix = $08;
  63.     kQ3PickDetailMaskXYZ        = $10;
  64.     kQ3PickDetailMaskDistance    = $20;
  65.     kQ3PickDetailMaskNormal        = $40;
  66.     kQ3PickDetailMaskShapePart    = $80;
  67.     kQ3PickDetailMaskPickPart    = $0100;
  68.     kQ3PickDetailMaskUV            = $0200;
  69.  
  70.  
  71. TYPE
  72.     TQ3PickDetail                        = UInt32;
  73. {*****************************************************************************
  74.  **                                                                             **
  75.  **                                Hitlist sorting                                 **
  76.  **                                                                             **
  77.  ****************************************************************************}
  78.     TQ3PickSort                 = SInt32;
  79. CONST
  80.     kQ3PickSortNone                = 0;
  81.     kQ3PickSortNearToFar        = 1;
  82.     kQ3PickSortFarToNear        = 2;
  83.  
  84.  
  85. {*****************************************************************************
  86.  **                                                                             **
  87.  **                    Data structures to set up the pick object                 **
  88.  **                                                                             **
  89.  ****************************************************************************}
  90.  
  91. TYPE
  92.     TQ3PickDataPtr = ^TQ3PickData;
  93.     TQ3PickData = RECORD
  94.         sort:                    TQ3PickSort;
  95.         mask:                    TQ3PickDetail;
  96.         numHitsToReturn:        UInt32;
  97.     END;
  98.  
  99.     TQ3WindowPointPickDataPtr = ^TQ3WindowPointPickData;
  100.     TQ3WindowPointPickData = RECORD
  101.         data:                    TQ3PickData;
  102.         point:                    TQ3Point2D;
  103.         vertexTolerance:        Single;
  104.         edgeTolerance:            Single;
  105.     END;
  106.  
  107.     TQ3WindowRectPickDataPtr = ^TQ3WindowRectPickData;
  108.     TQ3WindowRectPickData = RECORD
  109.         data:                    TQ3PickData;
  110.         rect:                    TQ3Area;
  111.     END;
  112.  
  113.     TQ3WorldRayPickDataPtr = ^TQ3WorldRayPickData;
  114.     TQ3WorldRayPickData = RECORD
  115.         data:                    TQ3PickData;
  116.         ray:                    TQ3Ray3D;
  117.         vertexTolerance:        Single;
  118.         edgeTolerance:            Single;
  119.     END;
  120.  
  121.  
  122. {*****************************************************************************
  123.  **                                                                             **
  124.  **                                    Hit data                                 **
  125.  **                                                                             **
  126.  ****************************************************************************}
  127.     TQ3HitPathPtr = ^TQ3HitPath;
  128.     TQ3HitPath = RECORD
  129.         rootGroup:                TQ3GroupObject;
  130.         depth:                    UInt32;
  131.         positions:                TQ3GroupPositionPtr;
  132.     END;
  133.  
  134. {*****************************************************************************
  135.  **                                                                             **
  136.  **                                Pick class methods                             **
  137.  **                                                                             **
  138.  ****************************************************************************}
  139. FUNCTION Q3Pick_GetType(pick: TQ3PickObject): TQ3ObjectType; C;
  140. FUNCTION Q3Pick_GetData(pick: TQ3PickObject; VAR data: TQ3PickData): TQ3Status; C;
  141. FUNCTION Q3Pick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3PickData): TQ3Status; C;
  142. FUNCTION Q3Pick_GetVertexTolerance(pick: TQ3PickObject; VAR vertexTolerance: Single): TQ3Status; C;
  143. FUNCTION Q3Pick_GetEdgeTolerance(pick: TQ3PickObject; VAR edgeTolerance: Single): TQ3Status; C;
  144. FUNCTION Q3Pick_SetVertexTolerance(pick: TQ3PickObject; vertexTolerance: Single): TQ3Status; C;
  145. FUNCTION Q3Pick_SetEdgeTolerance(pick: TQ3PickObject; edgeTolerance: Single): TQ3Status; C;
  146. FUNCTION Q3Pick_GetNumHits(pick: TQ3PickObject; VAR numHits: UInt32): TQ3Status; C;
  147. FUNCTION Q3Pick_EmptyHitList(pick: TQ3PickObject): TQ3Status; C;
  148. FUNCTION Q3Pick_GetPickDetailValidMask(pick: TQ3PickObject; index: UInt32; VAR pickDetailValidMask: TQ3PickDetail): TQ3Status; C;
  149. FUNCTION Q3Pick_GetPickDetailData(pick: TQ3PickObject; index: UInt32; pickDetailValue: TQ3PickDetail; detailData: UNIV Ptr): TQ3Status; C;
  150. FUNCTION Q3HitPath_EmptyData(VAR hitPath: TQ3HitPath): TQ3Status; C;
  151. {*****************************************************************************
  152.  **                                                                             **
  153.  **                            Window point pick methods                         **
  154.  **                                                                             **
  155.  ****************************************************************************}
  156. FUNCTION Q3WindowPointPick_New({CONST}VAR data: TQ3WindowPointPickData): TQ3PickObject; C;
  157. FUNCTION Q3WindowPointPick_GetPoint(pick: TQ3PickObject; VAR point: TQ3Point2D): TQ3Status; C;
  158. FUNCTION Q3WindowPointPick_SetPoint(pick: TQ3PickObject; {CONST}VAR point: TQ3Point2D): TQ3Status; C;
  159. FUNCTION Q3WindowPointPick_GetData(pick: TQ3PickObject; VAR data: TQ3WindowPointPickData): TQ3Status; C;
  160. FUNCTION Q3WindowPointPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WindowPointPickData): TQ3Status; C;
  161.  
  162. {*****************************************************************************
  163.  **                                                                             **
  164.  **                            Window rect pick methods                         **
  165.  **                                                                             **
  166.  ****************************************************************************}
  167. FUNCTION Q3WindowRectPick_New({CONST}VAR data: TQ3WindowRectPickData): TQ3PickObject; C;
  168. FUNCTION Q3WindowRectPick_GetRect(pick: TQ3PickObject; VAR rect: TQ3Area): TQ3Status; C;
  169. FUNCTION Q3WindowRectPick_SetRect(pick: TQ3PickObject; {CONST}VAR rect: TQ3Area): TQ3Status; C;
  170. FUNCTION Q3WindowRectPick_GetData(pick: TQ3PickObject; VAR data: TQ3WindowRectPickData): TQ3Status; C;
  171. FUNCTION Q3WindowRectPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WindowRectPickData): TQ3Status; C;
  172.  
  173. {*****************************************************************************
  174.  **                                                                             **
  175.  **                            World ray pick methods                             **
  176.  **                                                                             **
  177.  ****************************************************************************}
  178. FUNCTION Q3WorldRayPick_New({CONST}VAR data: TQ3WorldRayPickData): TQ3PickObject; C;
  179. FUNCTION Q3WorldRayPick_GetRay(pick: TQ3PickObject; VAR ray: TQ3Ray3D): TQ3Status; C;
  180. FUNCTION Q3WorldRayPick_SetRay(pick: TQ3PickObject; {CONST}VAR ray: TQ3Ray3D): TQ3Status; C;
  181. FUNCTION Q3WorldRayPick_GetData(pick: TQ3PickObject; VAR data: TQ3WorldRayPickData): TQ3Status; C;
  182. FUNCTION Q3WorldRayPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WorldRayPickData): TQ3Status; C;
  183.  
  184.  
  185. {*****************************************************************************
  186.  **                                                                             **
  187.  **                                Shape Part methods                             **
  188.  **                                                                             **
  189.  ****************************************************************************}
  190. FUNCTION Q3ShapePart_GetType(shapePartObject: TQ3ShapePartObject): TQ3ObjectType; C;
  191. FUNCTION Q3MeshPart_GetType(meshPartObject: TQ3MeshPartObject): TQ3ObjectType; C;
  192. FUNCTION Q3ShapePart_GetShape(shapePartObject: TQ3ShapePartObject; VAR shapeObject: TQ3ShapeObject): TQ3Status; C;
  193. FUNCTION Q3MeshPart_GetComponent(meshPartObject: TQ3MeshPartObject; VAR component: TQ3MeshComponent): TQ3Status; C;
  194. FUNCTION Q3MeshFacePart_GetFace(meshFacePartObject: TQ3MeshFacePartObject; VAR face: TQ3MeshFace): TQ3Status; C;
  195. FUNCTION Q3MeshEdgePart_GetEdge(meshEdgePartObject: TQ3MeshEdgePartObject; VAR edge: TQ3MeshEdge): TQ3Status; C;
  196. FUNCTION Q3MeshVertexPart_GetVertex(meshVertexPartObject: TQ3MeshVertexPartObject; VAR vertex: TQ3MeshVertex): TQ3Status; C;
  197.  
  198.  
  199. {$ALIGN RESET}
  200. {$POP}
  201.  
  202. {$SETC UsingIncludes := QD3DPickIncludes}
  203.  
  204. {$ENDC} {__QD3DPICK__}
  205.  
  206. {$IFC NOT UsingIncludes}
  207.  END.
  208. {$ENDC}
  209.